package net.blank.stringUtl
{
	import flash.utils.Dictionary;

	public class StringUtl
	{
		/**
		 * 插入字符串
		 * @param srcText 源文本
		 * @param selStartIndex 选择的开始索引
		 * @param selEndIndex 选择的结束索引
		 * @param insertText 插入的文本(不指定此值时表示从源文本中删除从 selStartIndex 到 selEndIndex 之间文本内容)
		 * @return 
		 * 
		 */
		public static function insertString(srcText:String,selStartIndex:int,selEndIndex:int,insertText:String=null):String{
			if(insertText){
				return srcText.substr(0,selStartIndex)+
					insertText+
					srcText.substr(selEndIndex);
			}
			return srcText.substr(0,selStartIndex)+
				srcText.substr(selEndIndex);
		}
		
		/**
		 * 将字符串中以指定定界符开始并以指定定界符结束的字符替换为 replacePool 列表中的字符
		 * @param srcText 源文本
		 * @param prefix 前定界符
		 * @param suffix 后定界符
		 * @param replacePool 
		 * @return 
		 * 
		 */
		public static function replaceByFix(srcText:String,prefix:String,suffix:String,replacePool:Dictionary):String{
			var s:int,e:int;
			
			while(true){
				s=srcText.indexOf(prefix,e);
				if(s != -1){
					e=srcText.indexOf(suffix,s);
					if(e != -1){
						var oldStr:String=srcText.slice(s+1,e);
						if(oldStr in replacePool){
							var newStr:String=replacePool[oldStr];
							
							srcText=srcText.replace(prefix+oldStr+suffix,newStr);
							e=s+newStr.length;
						}
					}else{
						break;
					}
				}else{
					break;
				}
			}
			
			return srcText;
		}
	}
}